home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / e / cha_source.lha / cha_source / errors.e < prev    next >
Encoding:
Text File  |  1999-12-18  |  2.0 KB  |  51 lines

  1. /*==========================================================================+
  2. | errors.e                                                                  |
  3. | unified error reporting                                                   |
  4. +--------------------------------------------------------------------------*/
  5.  
  6. OPT MODULE,
  7.     PREPROCESS
  8. OPT EXPORT
  9.  
  10. /*-------------------------------------------------------------------------*/
  11.  
  12. #define error(s) Throw("ERR", s)
  13. #define argerror(s) Throw("args", s)
  14.  
  15. /*-------------------------------------------------------------------------*/
  16.  
  17. PROC errorstring(x, xi)
  18.     DEF s = 0, r2 = 0, r3 = 0
  19.     r2 := xi
  20.     SELECT x
  21.     CASE 0
  22.     CASE "ERR";  s := '*** Error: \s\n'
  23.     CASE "^C";   s := '*** Break\n'
  24.     CASE "MEM";  s := '*** Error: not enough free memory\n'
  25.     CASE "NEW";  s := '*** Error: not enough free memory\n'
  26.     CASE "ARG";  s := '*** Usage error: value expected for argument \s\n'
  27.     CASE "IARG"; s := '*** Usage error: integer expected for argument \s\n'
  28.     CASE "FARG"; s := '*** Usage error: real number expected for argument \s\n'
  29.     CASE "SARG"; s := '*** Usage error: string expected for argument \s\n'
  30.     CASE "OARG"; s := '*** Usage error: instrument number expected for argument \s\n'
  31.     CASE "ARGS"; s := '*** Usage error: type ? for help\n'
  32.     CASE "args"; s := '*** Usage error: \s\n'
  33.     CASE "rarg"; s := '*** Usage error: argument \s outside valid range\n'
  34.     CASE "oss";  s := '*** OSS error: \s\n'
  35.     CASE "bug";  s := '*** Internal error: \z\h[8]\n'
  36.     DEFAULT;     s := '*** Unknown error: \z\h[8] \z\h[8] ("\s", "\s")\n'; r2 := x; r3 := xi
  37.     ENDSELECT
  38. ENDPROC s, r2, r3
  39.  
  40. /*-------------------------------------------------------------------------*/
  41.  
  42. EXPORT PROC printerror(x, xi)
  43.     DEF s = 0, a = 0, b = 0
  44.     s, a, b := errorstring(x, xi)
  45.     IF s THEN WriteF(s, a, b, NEW [a, 0], b)
  46. ENDPROC
  47.  
  48. /*--------------------------------------------------------------------------+
  49. | END: errors.e                                                             |
  50. +==========================================================================*/
  51.